﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using QLTV.Public;
using QLTV.BLL;

namespace QLTV.GUI.Forms
{
    public partial class frmDauSach : DevExpress.XtraEditors.XtraForm
    {
        DauSachBLL dsBLL = new DauSachBLL();
        DauSachDTO dsDTO = new DauSachDTO();

        TheLoaiBLL tlBLL = new TheLoaiBLL();
        TheLoaiDTO tlDTO = new TheLoaiDTO();

        TacGiaBLL tgBLL = new TacGiaBLL();
        TacGiaDTO tgDTO = new TacGiaDTO();

        NXBBLL nxbBLL = new NXBBLL();
        NXBDTO nxbDTO = new NXBDTO();

        QuyDinhDTO qdDTO = new QuyDinhDTO();
        QuyDinhBLL qdBLL = new QuyDinhBLL();

        

        string tam = "";
        private bool kt = false;
        
        public frmDauSach()
        {
            InitializeComponent();

            DataTable tl = tlBLL.TheLoai_LoadDuLieu();

            gridTL.Properties.DataSource = tl;
            gridTL.Properties.DisplayMember = "TenTL";
            gridTL.Properties.ValueMember = "MaTL";

            DataTable tg = tgBLL.LoadDuLieu();

            gridTG.Properties.DataSource = tg;
            gridTG.Properties.DisplayMember = "TenTG";
            gridTG.Properties.ValueMember = "MaTG";

            DataTable nxb = nxbBLL.Load();

            gridNXB.Properties.DataSource = nxb;
            gridNXB.Properties.DisplayMember = "TenNXB";
            gridNXB.Properties.ValueMember = "MaNXB";
        }

        public frmDauSach(string _mads)
        {
            InitializeComponent();
            dsDTO.MaDS = _mads;
            DataTable dt = dsBLL.LoadDuLieuCotMaDS(dsDTO);
            tam = dt.Rows[0]["MaDS"].ToString();
            txtDS.Text = dt.Rows[0]["TenDS"].ToString();

            DataTable tl = tlBLL.TheLoai_LoadDuLieu();

            gridTL.Properties.DataSource = tl;
            gridTL.Properties.DisplayMember = "TenTL";
            gridTL.Properties.ValueMember = "MaTL";

            DataTable tg = tgBLL.LoadDuLieu();

            gridTG.Properties.DataSource = tg;
            gridTG.Properties.DisplayMember = "TenTG";
            gridTG.Properties.ValueMember = "MaTG";

            DataTable nxb = nxbBLL.Load();

            gridNXB.Properties.DataSource = nxb;
            gridNXB.Properties.DisplayMember = "TenNXB";
            gridNXB.Properties.ValueMember = "MaNXB";
            
        }
        public delegate void MyDelegate(object sender, bool check);
        public event MyDelegate myEvent;
        private bool Is_Send
        {
            set
            {
                if (value)
                {
                    if (myEvent != null) myEvent(sender: this, check: kt);
                }
            }
        }
        private void btnGhiDuLieu_Click(object sender, EventArgs e)
        {
            try
            {
                if (tam == "")
                {
                    dsDTO.MaDS = "";
                }
                else
                {
                    dsDTO.MaDS = tam;
                }
                dsDTO.TenDS = txtDS.Text.ToString().Trim();
                dsDTO.MaTL = ("" + gridTL.Properties.View.GetFocusedRowCellValue("MaTL").ToString().Trim());
                dsDTO.MaTG = ("" + gridTG.Properties.View.GetFocusedRowCellValue("MaTG").ToString().Trim());
                dsDTO.MaNXB = ("" + gridNXB.Properties.View.GetFocusedRowCellValue("MaNXB").ToString().Trim());
                
                dsDTO.NamXB = int.Parse(cbNam.Text);



                int nam_hientai = int.Parse(DateTime.Now.ToString().Trim().Substring(6, 4));
                int nam = int.Parse((qdBLL.QuyDinh_LoadDuLieu()).Rows[3]["GiaTri"].ToString().Trim());
                int cb = int.Parse(cbNam.Text);
                int kq = nam_hientai - cb;


            
                
                dsDTO.TriGia = int.Parse(txtTG.Text);
                dsDTO.TrangThai = false;

                             
                if (txtDS.Text.Trim() == "")
                {
                    MessageBox.Show("Bạn phải nhập tên đầu sách", "Cảnh báo thiếu!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                if (kq > 8 || kq < 0)
                {
                    MessageBox.Show("Chỉ nhận các đầu sách xuất bản trong vòng 8 năm", "Cảnh báo!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    cbNam.Focus();
                }   
                else
                {
                    int kq1 = dsBLL.nhap(dsDTO);
                    if (kq1 < 0)
                    {
                        kt = true;
                        Is_Send = true;
                        if (tam == "")
                        {
                            txtDS.Focus();
                            MessageBox.Show("Đã thêm thành công");

                        }
                        else
                        {
                            MessageBox.Show("Đã cập nhật dữ liệu thành công");
                            this.Close();
                            tam = "";
                        }
                    }
                    else
                    {
                        MessageBox.Show("Thêm thất bại");

                    }
                    txtDS.Text = "";
                    gridTL.Text = "";
                    gridTG.Text = "";
                    gridNXB.Text = "";
                    cbNam.Text = "";
                    txtTG.Text = "";
                }
            }
            catch
            {
                MessageBox.Show("Bạn phải nhập đầy đủ", "Cảnh báo thiếu!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnAddTL_Click(object sender, EventArgs e)
        {
            frmTheLoai frmTL = new frmTheLoai();

            frmTL.myEvent += frm_myEvent;

            frmTL.ShowDialog();
        }
        private void frm_myEvent(object sender, bool check)
        {
            bool kt = check;
            if (kt == true)
                gridTL.Properties.DataSource = tlBLL.TheLoai_LoadDuLieu();
        }
        private void frm_myEvent1(object sender, bool check)
        {
            bool kt = check;
            if (kt == true)
                gridTG.Properties.DataSource = tgBLL.LoadDuLieu();
        }

        private void frm_myEvent2(object sender, bool check)
        {
            bool kt = check;
            if (kt == true)
                gridNXB.Properties.DataSource = nxbBLL.Load();
        }

        private void btnAddTG_Click(object sender, EventArgs e)
        {
            frmTacGia frmTG = new frmTacGia();

            frmTG.myEvent += frm_myEvent1;

            frmTG.ShowDialog();
        }

        private void btnAddNXB_Click(object sender, EventArgs e)
        {
            frmNXB frmNXB = new frmNXB();

            frmNXB.myEvent += frm_myEvent2;

            frmNXB.ShowDialog();
        }
        
        
        
        private void cbNam_SelectedIndexChanged(object sender, EventArgs e)
        {
            int nam_hientai = int.Parse(DateTime.Now.ToString().Trim().Substring(6, 4));
            int nam = int.Parse((qdBLL.QuyDinh_LoadDuLieu()).Rows[3]["GiaTri"].ToString().Trim());
            int cb = int.Parse(cbNam.Text);
            int kq = nam_hientai - cb;
            if (kq>8|| kq <0)
            {
                MessageBox.Show("Chỉ nhận các đầu sách xuất bản trong vòng 8 năm", "Cảnh báo!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

        }

        private void txtTG_EditValueChanged(object sender, EventArgs e)
        {

        }
    }
}